package com.cskaoyan.shopping.service.impl;

import com.cskaoyan.shopping.dal.entitys.Item;
import com.cskaoyan.shopping.dal.persistence.ItemMapper;
import com.cskaoyan.shopping.dal.persistence.PanelContentMapper;
import com.cskaoyan.shopping.dal.persistence.PanelMapper;
import com.cskaoyan.shopping.dto.*;
import com.cskaoyan.shopping.service.HomePageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.util.ArrayList;
import java.util.List;

/**
 * @author wuwen
 * @since 2022/10/25
 * 18:02
 */
@Service
public class HomePageServiceImpl implements HomePageService {
    @Autowired
    PanelMapper panelMapper;
    @Autowired
    ItemMapper itemMapper;
    @Autowired
    PanelContentMapper panelContentMapper;
    @Override
    public List<PanelDto> searchPanelInfo() {
        ArrayList<PanelDto> panelDtos = new ArrayList<>();
        List<PanelInfoDto> panelInfoDtos = panelMapper.selectFromPanel();
        for (PanelInfoDto panelInfoDto : panelInfoDtos) {
            PanelDto panelDto = new PanelDto();
            panelDto.setId(panelInfoDto.getId());
            panelDto.setLimitNum(panelInfoDto.getLimitNum());
            panelDto.setName(panelInfoDto.getName());
            panelDto.setPosition(panelInfoDto.getPosition());
            panelDto.setRemark(panelInfoDto.getRemark());
            panelDto.setSortOrder(panelInfoDto.getSortOrder());
            panelDto.setStatus(panelInfoDto.getStatus());
            panelDto.setType(panelInfoDto.getType());
            Integer id = panelInfoDto.getId();
            List<PanelContentInfoDto> panelContentInfoDtos = panelContentMapper.selectPanelContentInfo(id);
            ArrayList<PanelContentItemDto> panelContentItemDtos = new ArrayList<>();
            for (PanelContentInfoDto panelContentInfoDto : panelContentInfoDtos) {
                Long productId = panelContentInfoDto.getProductId();
                if(productId!=null){
                    PanelContentItemDto panelContentItemDto = new PanelContentItemDto();
                    panelContentItemDto.setCreated(panelContentInfoDto.getCreated());
                    panelContentItemDto.setFullUrl(panelContentInfoDto.getFullUrl());
                    panelContentItemDto.setId(panelContentInfoDto.getId());
                    panelContentItemDto.setPanelId(panelContentInfoDto.getPanelId());
                    panelContentItemDto.setPicUrl(panelContentInfoDto.getPicUrl());
                    panelContentItemDto.setPicUrl2(panelContentInfoDto.getPicUrl2());
                    panelContentItemDto.setPicUrl3(panelContentInfoDto.getPicUrl3());
                    panelContentItemDto.setProductId(panelContentInfoDto.getProductId());
                    panelContentItemDto.setSortOrder(panelContentInfoDto.getSortOrder());
                    panelContentItemDto.setType(panelContentInfoDto.getType());
                    panelContentItemDto.setUpdated(panelContentInfoDto.getUpdated());
                    ItemDto itemDto = itemMapper.selectFromItem(productId);
                    panelContentItemDto.setProductName(itemDto.getProductName());
                    panelContentItemDto.setSalePrice(itemDto.getSalePrice());
                    panelContentItemDto.setSubTitle(itemDto.getSubTitle());
                    panelContentItemDtos.add(panelContentItemDto);
                }

            }
            panelDto.setPanelContentItems(panelContentItemDtos);
            panelDtos.add(panelDto);
        }
        return panelDtos;
        /*List<PanelInfoDto> panelInfoDtos = panelMapper.selectFromPanel();
        ArrayList<PanelDto> panelDtos = new ArrayList<>();
        for (PanelInfoDto panelInfoDto : panelInfoDtos) {
            PanelDto panelDto = new PanelDto();
            ArrayList<PanelContentItemDto> panelContentItemDtos1 = new ArrayList<>();
            Integer id = panelInfoDto.getId();
            panelDto.setId(panelInfoDto.getId());
            panelDto.setName(panelInfoDto.getName());
            panelDto.setType(panelInfoDto.getType());
            panelDto.setSortOrder(panelInfoDto.getSortOrder());
            panelDto.setPosition(panelInfoDto.getPosition());
            panelDto.setLimitNum(panelInfoDto.getLimitNum());
            panelDto.setStatus(panelInfoDto.getStatus());
            panelDto.setRemark(panelInfoDto.getRemark());
            List<PanelContentInfoDto> panelContentItemDtos = panelContentMapper.selectPanelContentInfo(id);
            for (PanelContentInfoDto panelContentInfoDto : panelContentItemDtos) {
                PanelContentItemDto panelContentItemDto1 = new PanelContentItemDto();
                Long productId = panelContentInfoDto.getProductId();
                ItemDto itemDto = itemMapper.selectFromItem((Long) productId);
                panelContentItemDto1.setId(panelContentInfoDto.getId());
                panelContentItemDto1.setPanelId(panelContentInfoDto.getPanelId());
                panelContentItemDto1.setType(panelContentInfoDto.getType());
                panelContentItemDto1.setProductId(panelContentInfoDto.getProductId());
                panelContentItemDto1.setSortOrder(panelContentInfoDto.getSortOrder());
                panelContentItemDto1.setFullUrl(panelContentInfoDto.getFullUrl());
                panelContentItemDto1.setPicUrl(panelContentInfoDto.getPicUrl());
                panelContentItemDto1.setPicUrl2(panelContentInfoDto.getPicUrl2());
                panelContentItemDto1.setPicUrl3(panelContentInfoDto.getPicUrl3());
                panelContentItemDto1.setCreated(panelContentInfoDto.getCreated());
                panelContentItemDto1.setUpdated(panelContentInfoDto.getUpdated());
                //panelContentItemDto1.setProductName(itemDto.getProductName());
                //panelContentItemDto1.setSalePrice(itemDto.getSalePrice());
               // panelContentItemDto1.setSubTitle(itemDto.getSubTitle());
                panelContentItemDtos1.add(panelContentItemDto1);
            }
            panelDto.setPanelContentItems(panelContentItemDtos1);
            panelDtos.add(panelDto);
        }
        return panelDtos;

         */
    }
}

